package ipt.br.arbio.controller;

import java.util.List;

import ipt.br.arbio.domain.AcaoAntropica;
import ipt.br.arbio.domain.AnaliseInterna;
import ipt.br.arbio.domain.AnaliseRisco;
import ipt.br.arbio.domain.Arquivo;
import ipt.br.arbio.domain.Arvore;
import ipt.br.arbio.domain.AvaliacaoCopa;
import ipt.br.arbio.domain.AvaliacaoFuste;
import ipt.br.arbio.domain.AvaliacaoRadicular;
import ipt.br.arbio.domain.Broca;
import ipt.br.arbio.domain.CondicaoEntorno;
import ipt.br.arbio.domain.Cupim;
import ipt.br.arbio.domain.EstadoFitossanitario;
import ipt.br.arbio.domain.Formiga;
import ipt.br.arbio.domain.Fungo;
import ipt.br.arbio.domain.Inspecao;
import ipt.br.arbio.domain.MapeamentoAtaqueCupim;
import ipt.br.arbio.domain.MapeamentoAtaqueFungo;
import ipt.br.arbio.domain.OutraPraga;
import ipt.br.arbio.domain.Recomendacao;
import ipt.br.arbio.domain.TipoRecomendacao;
import ipt.br.arbio.repository.InspecaoRepository;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

@Resource
public class InspecaoController {

	private Result result;
	private InspecaoRepository inspecaoRepository;

	public InspecaoController(Result result,
			InspecaoRepository inspecaoRepository) {
		this.result = result;
		this.inspecaoRepository = inspecaoRepository;
	}

	public void form() {

	}

	public void save() {
		for (int i = 0; i < 10; i++) {
			Inspecao inspecao = new Inspecao();
			inspecao.setArvore(new Arvore());
			inspecao.setAcaoAntropica(new AcaoAntropica());
			inspecao.setAnaliseInterna(new AnaliseInterna());
			inspecao.setAnaliseRisco(new AnaliseRisco());
			inspecao.setAvaliacaoCopa(new AvaliacaoCopa());
			inspecao.setAvaliacaoFuste(new AvaliacaoFuste());
			inspecao.setAvaliacaoRadicular(new AvaliacaoRadicular());
			inspecao.setCondicaoEntorno(new CondicaoEntorno());
			EstadoFitossanitario estadoFitossanitario = new EstadoFitossanitario();

			Cupim cupim = new Cupim();

			for (int j = 0; j < 3; j++) {
				MapeamentoAtaqueCupim map = new MapeamentoAtaqueCupim();
				cupim.getMapeamentosAtaquesCupim().add(map);
			}

			Fungo fungo = new Fungo();

			for (int j = 0; j < 3; j++) {
				MapeamentoAtaqueFungo map = new MapeamentoAtaqueFungo();
				fungo.getMapeamentosAtaquesFungo().add(map);
			}

			estadoFitossanitario.setBroca(new Broca());
			estadoFitossanitario.setCupim(cupim);
			estadoFitossanitario.setFormiga(new Formiga());
			estadoFitossanitario.setFungo(fungo);
			estadoFitossanitario.setOutraPraga(new OutraPraga());
			inspecao.setEstadoFitossanitario(estadoFitossanitario);

			for (int j = 0; j < 3; j++) {

				Arquivo arquivo = new Arquivo();
				inspecao.getFotos().add(arquivo);
			}

			for (int j = 0; j < 5; j++) {

				Recomendacao r = new Recomendacao();
				r.setTipoRecomendacao(new TipoRecomendacao());
				inspecao.getRecomendacoes().add(r);
			}
			this.inspecaoRepository.saveOrUpdate(inspecao);
		}

		this.result.redirectTo(this).form();
	}

	public void form2() {

	}

	public void list() {
		List<Inspecao> inspecaoList = this.inspecaoRepository.listAll();
		this.result.include("inspecaoList", inspecaoList);
	}

	public void delete() {
		for (int i = 5; i < 10; i++) {
			Inspecao inspecao = inspecaoRepository.get(Integer.valueOf(i));
			Inspecao insp = inspecaoRepository.load(i);
			if (inspecao != null)
				inspecaoRepository.delete(inspecao);
			else
				inspecaoRepository.delete(insp);
		}

	}
}
